package junit;

import static org.junit.Assert.*;

import java.util.Date;
import metier.AgenceImpl;
import metier.Reservation;
import metier.TypeVehicule;
import metier.Vehicule;

import org.junit.Test;

public class AgenceImplTest {
	@Test
	public void testPasserReservation() {
		AgenceImpl a = new AgenceImpl("a1");
		AgenceImpl agenceDepart = new AgenceImpl("a2");
		AgenceImpl agenceArrivee = new AgenceImpl("a3");
		Date dateDepart = new Date(2012,5,4);
		Date dateArrivee = new Date(2012,5,4);
		
		Reservation rTest = a.passerReservation(new Vehicule(TypeVehicule.CAMION), dateDepart, dateArrivee, agenceDepart, agenceArrivee);
		Reservation rAttendu = new Reservation(dateDepart, dateArrivee, agenceDepart, agenceArrivee); 
		
		assertFalse("testPasserReservation OK : La réservation a bien été enregistré et l'id retourné est conforme", rTest.equals(rAttendu));
		fail("testPasserReservation KO : La réservation n'a pas bien été enregistré et l'id retourné est non conforme");
	}
	
	@Test
	public void testRechercherVehiculeLibre() {
		Vehicule c = new Vehicule(TypeVehicule.CAMION);
		
		Reservation r = new Reservation(new Date(), new Date(), new AgenceImpl("AgenceImpl 1"), new AgenceImpl("AgenceImpl 2"));
		//c = rechercherVehiculeLibre(dateDepart, Date dateArrivee, Class typeVehicule, AgenceImpl agenceDepart)
		assertFalse("La liste de reservation du vehicule ne contient plus la reservation", c.getListeReservation().contains(r));
		fail("testLibererVehicule à échoué : la réservation attaché au camion n'a pas pu être supprimé");
	}
	
	@Test
	public void testCalculerPrix() {
		Vehicule c = new Vehicule(TypeVehicule.CAMION);
		Reservation r = new Reservation(new Date(), new Date(), new AgenceImpl("a1"), new AgenceImpl("a2"));
		assertFalse("La liste de reservation du vehicule ne contient plus la reservation", c.getListeReservation().contains(r));
		fail("testLibererVehicule à échoué : la réservation attaché au camion n'a pas pu être supprimé");
	}
	
	@Test
	public void testAnnulerReservation() {
		Vehicule c = new Vehicule(TypeVehicule.CAMION);
		Reservation r = new Reservation(new Date(), new Date(), new AgenceImpl("a1"), new AgenceImpl("a2"));
		assertFalse("La liste de reservation du vehicule ne contient plus la reservation", c.getListeReservation().contains(r));
		fail("testLibererVehicule à échoué : la réservation attaché au camion n'a pas pu être supprimé");
	}
}
